package cn.fl.ass.service.impl;

import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.constant.BaseExceptionConstant;
import cn.cmm.base.framework.exception.BaseException;
import cn.cmm.base.framework.utils.BaseLogUtils;
import cn.cmm.base.framework.utils.CollectionUtils;
import cn.cmm.base.framework.utils.StringUtils;
import cn.fl.ass.service.IAssVfRtnLogService;
import cn.fl.ass.transform.AssVfRtnLogVOTransform;
import cn.fl.ass.vo.AssVfRtnLogVO;
import cn.fl.framework.base.context.CurrentThreadContext;
import fl.ass.facade.api.IAssVfInfoApi;
import fl.ass.facade.dto.AssVfRtnLogDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * @Description: 资产核销回款记录表 客户端服务层接口实现
 * @Description: 业务层方法名称前缀：新增：add* 删除：remove* 修改：modify* 查询对象：select* get* 批量：batch* 查询集合：search*
 */
@Service
public class AssVfRtnLogServiceImpl implements IAssVfRtnLogService {

    /**
     * 日志
     */
    private static final Logger logger = LoggerFactory.getLogger(AssVfRtnLogServiceImpl.class);

    @Autowired
    private IAssVfInfoApi assVfInfoApi;

    @Override
    public AssVfRtnLogVO selectById(Long id) throws BaseException {
        if (StringUtils.isEmpty(id)) {
            BaseLogUtils.info(logger, "selectById", "主键参数不能为空!", CurrentThreadContext.getCurrentUserName());
            throw new BaseException(BaseExceptionConstant.BASE_EXCEPTION_CODE_600, "获取对象主键不能为空!");
        }
        //TODO 业务逻辑
        AssVfRtnLogDTO dto = null;//this.自定义ApiService.selectAssVfRtnLogDTOById(id);
        return AssVfRtnLogVOTransform.toVO(dto);
    }

    @Override
    public Long add(AssVfRtnLogVO entity) throws BaseException {
        if (null == entity) {
            BaseLogUtils.info(logger, "add", "新增对象不存在!");
            throw new BaseException(BaseExceptionConstant.BASE_EXCEPTION_CODE_600, "新增对象不存在!");
        }
        ;
        //return this.assVfRtnLogApiService.add(AssVfRtnLogVOTransform.toDTO(entity));
        //TODO 业务逻辑
        return null;
    }

    @Override
    public boolean removeById(Long id) throws BaseException {
        if (StringUtils.isEmpty(id)) {
            BaseLogUtils.info(logger, "removeById", "删除对象主键不能为空!");
            throw new BaseException(BaseExceptionConstant.BASE_EXCEPTION_CODE_600, "删除对象主键不能为空!");
        }
        ;
        //return this.assVfRtnLogApiService.removeAssVfRtnLogDTOById(id);
        //TODO 业务逻辑
        return false;
    }

    /**
     * 删除
     *
     * @param ids
     * @return
     */
    @Override
    public boolean removeByIds(List<Long> ids) throws BaseException {
        if (CollectionUtils.isEmpty(ids)) {
            BaseLogUtils.info(logger, "removeByIds", "删除主键参数集合不能为空!", CurrentThreadContext.getCurrentUserName());
            throw new BaseException(BaseExceptionConstant.BASE_EXCEPTION_CODE_600, "删除对象主键不能为空!");
        }
        return this.assVfInfoApi.deleteAssVfRtnLogByIds(ids);
    }

    @Override
    public boolean modify(AssVfRtnLogVO entity) throws BaseException {
        if (null == entity) {
            BaseLogUtils.info(logger, "modify", "修改对象不能为空!");
            throw new BaseException(BaseExceptionConstant.BASE_EXCEPTION_CODE_600, "修改对象不能为空!");
        }
        ;
        //return this.assVfRtnLogApiService.modifyAssVfRtnLogDTO(AssVfRtnLogVOTransform.toDTO(entity));
        //TODO 业务逻辑
        return false;
    }

    @Override
    public Pager searchListPage(Pager page) throws BaseException {
        if (null == page) {
            page = new Pager();
        }
        return this.assVfInfoApi.searchAssVfRtnLogListPage(page);
    }

    @Override
    public void addRtnLogs(List<AssVfRtnLogVO> list) throws BaseException {
        if (CollectionUtils.isEmpty(list)) {
            return;
        }
        assVfInfoApi.addRtnLogs(AssVfRtnLogVOTransform.toDTOList(list));
    }
}
